Many techniques have been developed to enhance data security. Cryptographic algorithms, for example, can be used to keep data confidential and to authenticate that data purported as being from a particular source is, in fact, from that source. Such algorithms typically employ techniques that make circumvention (e.g., unauthorized decryption or impersonation) computationally infeasible. However, for cryptographic algorithms to be secure, they must be implemented correctly. Incorrect implementation can, in some instances, create vulnerabilities that can be exploited. Further, secure cryptographic algorithms can be very complex and the requirements for correct implementation can be complicated. Further, because of the level at which cryptographic algorithms are used, incorrect implementations and other issues can often go unnoticed.